//package com.gxd.ssoserver.service.Impl;
//
//import com.fasterxml.jackson.core.JsonProcessingException;
//import com.fasterxml.jackson.databind.ObjectMapper;
//import com.gxd.commons.codec.DigestsUtils;
//import com.gxd.commons.model.Result;
//import com.gxd.ssoserver.model.AccessToken;
//import com.gxd.ssoserver.model.LoginDTO;
//import com.gxd.ssoserver.service.IJwtService;
//import com.gxd.ssoserver.utils.JwtHelper;
//import io.jsonwebtoken.Claims;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.data.redis.core.StringRedisTemplate;
//import org.springframework.stereotype.Service;
//
///**
// * Author: lin.xj
// * Date: 2016-10-26
// * Description:
// */
//@Service
//public class JwtServiceImpl implements IJwtService {
//
//    @Value("${jwt.base64Security}")
//    private String base64Security;
//
//    @Value("${jwt.expiresSecond}")
//    private long expiresSecond;
//
//
//    @Autowired
//    private StringRedisTemplate redisTemplate;
//
//    private ObjectMapper objectMapper = new ObjectMapper();
//
//    @Override
//    public Object getAccessToken(LoginDTO loginDTO) {
//        Result resultMsg = null;
//        //User user = userDao.findByUserName(loginPara.getUserName());
//        //if(null != user){
//            //验证用户是否处于启用状态
//            //if(!user.getEnabled()){
//            //    return new ResultMsg(ResultStatusCode.DISABLED_USER.getErrcode(),
//            //            ResultStatusCode.DISABLED_USER.getErrmsg(),null);
//            //}
//            //验证密码
//            String md5Password = DigestsUtils.MD5Encode(loginDTO.getPassword());
//            String passwordDb = DigestsUtils.MD5Encode("hellosso").toUpperCase();//此处从数据库取密码
//            String passwordValidateCodeMd5 = DigestsUtils.MD5Encode(passwordDb+cachevalidCode);
//
//        if (loginDTO.getPassword() == null ||
//                !loginDTO.getPassword().toUpperCase().equals(passwordValidateCodeMd5.toUpperCase())) {
//            //拼装accessToken
//                String accessToken = JwtHelper.createJWT(loginDTO.getLoginAccount(), String.valueOf(user.getId()), loginPara.getIp(),
//                        expiresSecond * 1000, base64Security);
//
//                //保存登录记录accesslog
//                //AccessLog accessLog = new AccessLog();
//                //accessLog.setUserId(user.getId());
//                //accessLog.setEntryAddress(loginPara.getIp());
//                //accessLog.setAccessTime(new Date());
//                //accessTokenDao.save(accessLog);
//
//                //返回accessToken
//                AccessToken accessTokenEntity = new AccessToken();
//                accessTokenEntity.setAccessToken(accessToken);
//                accessTokenEntity.setExpiresIn(expiresSecond);
//                accessTokenEntity.setTokenType("bearer");
//                resultMsg = new Result(true,1, accessTokenEntity);
//                return resultMsg;
//            }
//        //}
//        return new Result(false,-1,"非法的账号密码");
//    }
//
//    @Override
//    public String validAccessToken(String accessToken) throws JsonProcessingException {
//        //Claims claims = JwtHelper.parseJWT(accessToken,base64Security);
//        //if(null != claims){
//        //    //token解析成功
//        //    //从redis中判断用户是否被禁用
//        //    String userKey = String.format(RedisPrefix.ForbidenUser,claims.get("userId"));
//        //    if(null == redisTemplate.opsForValue().get(userKey)){
//        //        //用户不存在与redis的禁用名单中，返回token中相关信息
//        //        return objectMapper.writeValueAsString(claims);
//        //    }
//        //}
//        return null;
//    }
//}
